
//添加到购物车的核心思路

//点击产品数据的时候获取这条数据 再把这条数据添加到当前的carts这个数组中就行了
//1 点击产品上的购物车按钮  获取当前这条数据的id
//2 拿到数据id 然后查找这条数据  在当前的actions中定义方法 接收
//3 加入到Carts中
export default{
    namespaced: true,
    state:{
        tag:'购物车模块store',
        //14 定义一个空数组 
        carts:[]
    },
    mutations:{
        //20创建方法
        SET_CART(state,payload){
            //22获取传递id
            let id = payload.id
            //23 用这个id到carts数组中查找有没有这条数据
            //如果有这条数据那么就让这条数据加1
            //如果没有 就创建一条数据 添加到carts  去渲染页面
            let target = state.carts.find(item=>item.id==id)
            if(!target){//没有这条数据
                let obj = {
                    id,
                    title:payload.title,
                    price:payload.price,
                    // inventory:payload.inventory,
                    count:1
                }
                state.carts.push(obj)
            }else{
                target.count++
            }
        }

    },
    //17 定义一个actions
    actions:{
        GET_PRODUCT(context,payload){
            // console.log(payload);
            //让products模块化store中的product数组中对应的数据库存减1
            // 通过mutations将传入的数据 添加到当前的carts状态中

            //21 传参   payload接收的是item 然后传给上面的payload
            context.commit('SET_CART',payload)

            //25 调用Product模块的mutations         dispatch  找action的    root转换根store  
            context.commit("Products/DECREMENT_INVENTORY",payload.id,{root:true})
        }
    },
    //29 使用getters计算
    getters:{
        total(state){
          return  state.carts.reduce((total,item)=>{
                return total +=item.count*item.price
            },0).toFixed(2)
        }
    },

}